/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Persistencia;

/**
 *
 * @author marco
 */

import java.sql.*;
import Logica.Accion;
import Logica.Comentario;
import java.util.LinkedList;

public class ADOAccion {
  
 private Singleton_Conexion datosconexion;   
  Connection conexion;
 public ADOAccion(){
       try{
            Class.forName(datosconexion.getInstancia().getDriver());
            conexion = DriverManager.getConnection(datosconexion.getInstancia().getProtocolo());
         }
      
        catch(ClassNotFoundException ex){
       ex.printStackTrace();
   } 
        catch(java.sql.SQLException e1){
            e1.printStackTrace();
        }
 }
 
 public boolean insertarAccion(Accion a){
  String sentencia = "Insert Into acciones (nombre,descripcion,nombre_usuario,fechaVencimiento,estado,fechaCreacion) values(?,?,?,?,?,?)";
  PreparedStatement st;   
        try{
          
            st= conexion.prepareStatement(sentencia);
            st.setString(1, a.getNombre());
            st.setString(2,a.getDescripcion());
            st.setString(3, a.getUsuario());
            st.setString(4, a.getFechaVencimientoString());
            st.setInt(5,1);
            st.setString(6, a.getFechaCreacionString());
            st.execute();
            st.close();
            return true;
        }
        catch(java.sql.SQLException e1){
            e1.printStackTrace();
            return false;
        }
 
 }
 
 public LinkedList traerAcciones(int orden){
           ResultSet rs=null;
           LinkedList lista = new LinkedList();
           String vorden="";
           switch (orden) {
              case(1):   vorden = "order by nombre_usuario";
                         break;
              case(0):   vorden = "order by id";
                         break; 
              case(2):   vorden = "order by fechaVencimiento";    
                  
          }     
           
          try{
              PreparedStatement st;
              String sentencia = "select * from acciones where estado = 1 "+vorden;
              st = conexion.prepareStatement(sentencia);
              rs = st.executeQuery();
             
              while(rs.next()) {
                 Accion a= new Accion();
                   a.setId(rs.getInt("id"));
                   a.setNombre(rs.getString("nombre"));
                   a.setDescripcion(rs.getString("descripcion"));
                   a.setFechaCreacionInvertida(rs.getString("fechaCreacion"));
                   a.setFechaVencimientoInvertida(rs.getString("fechaVencimiento"));
                   a.setEstado(rs.getInt("estado"));
                   a.setUsuario(rs.getString("nombre_usuario"));
                  

                   lista.add(a);
                  
             }                          
             
          }

         catch(java.sql.SQLException e1){
             System.out.println(e1.toString());
         }
         return lista;
 }
 
  public java.sql.ResultSet traerAccionesParaReporte(int orden){
           ResultSet rs=null;
           LinkedList lista = new LinkedList();
           String vorden="";
           switch (orden) {
              case(1):   vorden = "order by nombre_usuario";
                         break;
              case(0):   vorden = "order by id";
                         break; 
              case(2):   vorden = "order by fechaVencimiento";    
                  
          }     
           
          try{
              PreparedStatement st;
              String sentencia = "select id,nombre, nombre_usuario,fechaVencimiento from acciones "+vorden;
              st = conexion.prepareStatement(sentencia);
              rs = st.executeQuery();
              
             /*
              while(rs.next()) {
                 Accion a= new Accion();
                
                   a.setNombre(rs.getString("nombre"));
                   a.setUsuario(rs.getString("nombre_usuario"));
                   a.setId(rs.getInt("id"));
                  

                   lista.add(a);
                  
             }                          
             */
          }

         catch(java.sql.SQLException e1){
             System.out.println(e1.toString());
         }
         return rs;
 }
 
    public boolean actualizarAccion(Accion a)
    {
    String sentencia = "UPDATE acciones SET estado= ? WHERE id_accion = ?";

    PreparedStatement st;   
        try{
         
            st= conexion.prepareStatement(sentencia);
	    st.setInt(1, a.getEstado());
            st.setInt(2, a.getId());
            st.execute();
            st.close();
	    a.comentarioAccion();
            return true;
        }
        catch(java.sql.SQLException e1){
            e1.printStackTrace();
            return false;
        }
    }

    
    
}
